A software library is a collection of related object code, such as the use of Java classes in the Java language. Software libraries are typically packaged in modules, such as Java archive (Jar) files. In a Java environment, at runtime a class loader is responsible for locating libraries, reading their contents, and loading the classes contained within the libraries into the Java Virtual Machine (JVM). Usually classes are loaded on demand, at the time when each of those classes are actually used by the program. Class loaders shield the runtime system from needing to understand the exact structure of the underlying file system and files therein.
An enterprise-level software application, such as an application server, can include many modules or Jars. Each of the separate modules or Jars contains only a subset of functionalities out of the larger application. A class loader can load different modules or Jars of the enterprise-level software application into the virtual machine to provide certain functionalities. In some instance, not every module or Jar is loaded into the virtual machine, since only a subset of the functionalities of the enterprise-level software application is used. This is the general area the embodiments of the invention are intended to be used.